package com.ruoyi.utils;

import cn.hutool.core.util.IdUtil;
import cn.hutool.core.lang.Snowflake;

/**
 * 分布式ID生成工具类（基于Hutool的雪花算法）
 */
public class DistributedIdGenerator {

    /**
     * 雪花算法生成器
     * 参数1: workerId，工作机器ID (0~31)
     * 参数2: datacenterId，数据中心ID (0~31)
     */
    private static final Snowflake snowflake = IdUtil.createSnowflake(1, 1);

    /**
     * 生成下一个Long型ID
     * @return 分布式唯一ID
     */
    public static long getNextId() {
        return snowflake.nextId();
    }

    /**
     * 生成下一个String型ID
     * @return 分布式唯一ID字符串
     */
    public static String getNextIdStr() {
        return snowflake.nextIdStr();
    }

    public static void main(String[] args) {
        System.out.println("======= Hutool雪花算法生成分布式ID示例 =======");

        // 生成10个ID示例
        for (int i = 1; i <= 10; i++) {
            long id = getNextId();
            String idStr = getNextIdStr();

            System.out.println("第" + i + "个ID:");
            System.out.println("  Long类型: " + id);
            System.out.println("  String类型: " + idStr);
            System.out.println("------------------------");
        }
    }
}
